const lib = require('./ws-common-lib.js');
/*
  企业微信相关
 */

// 内部接口不暴露
// session过期自动登录
// TODO, 支持回调 options参数用起来
function _qyLogin(options) {
  wx.qy.login({
    success(result) {
      if (result.code) {
        lib.request({
          url: 'auth/workwechat/userid',
          data: {
            code: result.code,
          },
          cachetime: 0,
          showLoading: false,
        }).then(res => {
          if (res.data && res.data.errno === 0) {
            if (res.data.data) {
              const qyUserInfo = {
                corpid: res.data.data.corpid,
                userid: res.data.data.userid,
              };
              wx.setStorageSync('qyUserInfo', qyUserInfo);
            }
            options && options.success && options.success();
          } else {
            options && options.fail && options.fail(res);
          }
        }).catch(err => {
          options && options.fail && options.fail(err);
        });
      }
    },
    fail(e) {
      options && options.fail && options.fail();
    },
  });
}

let isWxWork = function() {
  // TODO, 还需要进一步优化
  return wx.getStorageSync('isWXWork');
};

// 暴露的对外接口1。 在各wx.login() && auth/session/openid 成功之下，如果开启企业微信侧并是在企业微信环境下，紧接着进行企业微信登录，并进行厂商服务器登录（绑定userID和openID）。
let qyWXLogin = function(options = {}) {
  _qyLogin(options);
};

// 暴露的外部接口2，供小程序端调用企业微信专用接口时的会话状态验证
// 失败自动重新登录
let qyWXCheckSeesion = function(options) {
  wx.qy.checkSession({
    // 微信session
    success(res) {
      // 自家服务器session
      lib.request({
        url: 'auth/workwechat/checkSession',
        cachetime: 0,
        showLoading: false,
      }).then((session) => {
        console.log('auth/workwechat/checkSession===', session.data.data.check);
        if (!session.data.data.check) {
          return _qyLogin(options);
        }
        options.success && options.success();
      }).catch(() => {
        console.log('服务商企业session失效');
        _qyLogin(options);
      });
    },
    fail() {
      console.log('企业微信session失效');
      _qyLogin(options);
    },
  });
};

export {
  isWxWork,
  qyWXLogin,
  qyWXCheckSeesion
};
